package models

import (
	"activity_srv/basic/config"
	"gorm.io/gorm"
	"time"
)

// 秒杀活动表
type Activity struct {
	Id             uint64         `gorm:"column:id;type:bigint UNSIGNED;comment:秒杀商品表id;primaryKey;not null;" json:"id"`                       // 秒杀商品表id
	GoodsId        int32          `gorm:"column:goods_id;type:int;comment:商品id;default:NULL;" json:"goods_id"`                                 // 商品id
	UserId         int32          `gorm:"column:user_id;type:int;comment:用户id;default:NULL;" json:"user_id"`                                   // 用户id
	ActivityTitle  string         `gorm:"column:activity_title;type:varchar(255);comment:活动标题;default:NULL;" json:"activity_title"`            // 活动标题
	Info           string         `gorm:"column:info;type:varchar(255);comment:简介;default:NULL;" json:"info"`                                  // 简介
	Price          int64          `gorm:"column:price;type:bigint;comment:原价格;default:NULL;" json:"price"`                                     // 原价格
	SeckillPrice   int64          `gorm:"column:seckill_price;type:bigint;comment:秒杀价格;default:NULL;" json:"seckill_price"`                    // 秒杀价格
	Stock          int32          `gorm:"column:stock;type:int;comment:库存;default:NULL;" json:"stock"`                                         // 库存
	GoodsStatus    int32          `gorm:"column:goods_status;type:int;comment:商品状态;default:NULL;" json:"goods_status"`                         // 商品状态
	StartTime      time.Time      `gorm:"column:start_time;type:datetime;comment:开始时间;default:NULL;" json:"start_time"`                        // 开始时间
	EndTime        time.Time      `gorm:"column:end_time;type:datetime;comment:结束时间;default:NULL;" json:"end_time"`                            // 结束时间
	Num            int32          `gorm:"column:num;type:int;comment:秒杀商品数量;default:NULL;" json:"num"`                                         // 秒杀商品数量
	ActivityStatus int32          `gorm:"column:activity_status;type:int;comment:活动状态：1：已开始，2：待开始，3：已结束;default:NULL;" json:"activity_status"` // 活动状态：1：已开始，2：待开始，3：已结束
	CreatedAt      time.Time      `gorm:"column:created_at;type:datetime(3);default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdatedAt      time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt      gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (a *Activity) TableName() string {
	return "activity"
}

//创建活动

func (a *Activity) CreateActivity() error {
	return config.DB.Create(&a).Error
}

// 获取活动商品id
func (a *Activity) GetActivityId() error {
	return config.DB.Where("id = ?", a.Id).First(&a).Error
}

// 更新活动状态
func (a *Activity) UpdateActivityStatus(db *gorm.DB) error {
	return db.Model(&Activity{}).Where("id = ?", a.Id).Update("activity_status", a.ActivityStatus).Error
}

// 更新活动库存
func (a *Activity) UpdateStock(db *gorm.DB) error {
	return db.Model(&Activity{}).Where("id = ?", a.Id).Update("stock", a.Stock).Error
}

// 列表展示
func (a *Activity) ListActivity() (list []*Activity, err error) {
	err = config.DB.Where("id = ?", a.Id).Find(&list).Error
	return
}
